\documentclass{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{geometry}
\geometry{top=15mm, bottom=15mm, left=1cm, right=1cm}
\usepackage[french]{babel}
\usepackage{pslatex}
\usepackage[colorlinks=true,urlcolor=black]{hyperref}
\usepackage{graphicx}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\footrulewidth}{0.4pt}
\fancyfoot[L]{Uubu.fr}
\fancyfoot[R]{mar. févr. 28 12:30:22 CET 2012}
\lfoot{\Large \textit{Uubu.fr}}
\hypersetup{pdfinfo={
Title={OpenSSL - cms},
Author={Sylvain Girod},
Creator={Bash script from uubu.fr's format version 1},
Producer={Bash script and PDFLaTeX},
Subject={Utilitaire CMS (Cryptographic Message Syntax)},
CreationDate={D:20120228123022},
ModDate={D:20120228123022},
Keywords={PKI;sécurité;chiffrement;certificats}
}}
\begin{document}
 
\begin{center}
{\Huge OpenSSL - cms }
\end{center}
\vspace{1cm}
 
\begin{flushleft}
 
{\large Utilitaire CMS (Cryptographic Message Syntax)}
 
\vspace{10mm}
 
\vspace{1cm}{\huge OPTIONS }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} -encrypt]{Chiffre un mail avec le certificat donné. Le fichier d’entrée est le message à chiffrer. Le fichier de sortie est le mail chiffré au format MIME. Le type de CMS actuel est \textbf{EnvelopedData}.}
\item[\hspace{1mm} -decrypt]{Déchiffre un mail en utilisant le certificat et la clé privée spécifiée. Le fichier d’entrée est un mail au format MIME. le fichier de sortie est le mail déchiffré.}
\item[\hspace{1mm} -sign]{Signe un mail en utilisant le certificat et la clé privée spécifiée. Le fichier d’entrée est le message à signer, le fichier de sortie est le message signé au format MIME.}
\item[\hspace{1mm} -verify]{Vérifie le mail signé. L’entrée est le mail signé, le fichier de sortie et la sortie est la donnée signée.}
\item[\hspace{1mm} -cmsout]{Prend un message en entrée et écrit une structure CMS encodée PEM}
\item[\hspace{1mm} -resign]{Re-signe un message: prend un message existant et un ou plusieurs nouveaux signataires.}
\item[\hspace{1mm} -data\_create]{Créé un type CMS Data}
\item[\hspace{1mm} -data\_out]{Type une donnée et sort le contenu}
\item[\hspace{1mm} -digest\_create]{Crée un type CMS DigestedData}
\item[\hspace{1mm} -digestVerify]{Vérifie un CMS DigestedData et sort le contenu}
\item[\hspace{1mm} -compress]{Créé un CMS CompressedData. OpenSSL doit être compilé avec zlib pour que cette option fonctionne.}
\item[\hspace{1mm} -uncompress]{Décompresse un CMS CompressedData.}
\item[\hspace{1mm} -EncryptedData\_encrypt]{Chiffre le contenu en utilisant une clé symétrique et un algorithme CMS EncryptedData et sort le contenu.}
\item[\hspace{1mm} -sign\_receipt]{Génère et sort un reçu signé pour le message spécifié. Le message d’entrée doit contenir une requête de reçu signée.}
\item[\hspace{1mm} -verify\_receipt receipt]{Vérifie un reçu signé dans le fichier spécifié. Le message d’entrée doit contenir une requête de reçu.}
\item[\hspace{1mm} -in filename]{Fichier d’entrée}
\item[\hspace{1mm} -inform SMIME|PEM|DER]{Format du fichier d’entrée, à utiliser avec -receipt\_verify}
\item[\hspace{1mm} -out filename]{Fichier de sortie}
\item[\hspace{1mm} -outform SMIME|PEM|DER]{Spécifie le format du fichier de sortie (défaut SMIME)}
\item[\hspace{1mm} -stream -indef]{-stream et indef sont équivalent et permettent le streaming I/O pour les opérations d’encodage. Cela permet un traitement en une passe de donnée sans nécessiter de maintenir tout le contenu en mémoire.}
\item[\hspace{1mm} -noindef]{Désactive le streaming I/O.}
\item[\hspace{1mm} -content filename]{spécifie un fichier contenant le contenu détaché. Seulement utile avec -verify et si la structure CMS utilise une signature détachée du contenu.}
\item[\hspace{1mm} -text]{Ajoute des en-têtes text/plain au message fournis.}
\item[\hspace{1mm} -noout]{Ne sort par la structure CMS parsée. Utile avec -print}
\item[\hspace{1mm} -print]{pour -cmsout, affiche tous les champs de la structure CMS.}
\item[\hspace{1mm} -CAfile file]{Un fichier contenant les certificats trustés. Utile avec -verify}
\item[\hspace{1mm} -CApath dir]{Un répertoire contenant les certificats CA. Utile avec -verify}
\item[\hspace{1mm} -md digest]{Algorithme digest à utiliser pour signer ou re-signer.}
\item[\hspace{1mm} -\texttt{[}ciphers\texttt{]}]{L’algorithme de chiffrement à utiliser. Voir enc pour la liste des chiffrements supportés. (Défaut : 3DES)}
\item[\hspace{1mm} -nointern]{En vérifiant un message, les certificats inclus dans le message sont utilisé pour vérifier la signature. Avec cette option, seul les certificats spécifiés avec -certfile sont utilisés.}
\item[\hspace{1mm} -no\_signer\_cert\_verify]{Ne vérifie pas le certificat du message signé.}
\item[\hspace{1mm} -nocerts]{En signant un message, le certificat du signataire est inclus. Cette option l’empêche.}
\item[\hspace{1mm} -noattr]{Normalement quand un message est signé, des attributs sont inclus dont la date de signature et les algorithmes symétriques supportés. Cette option ne les inclus pas.}
\item[\hspace{1mm} -nosmimecap]{Exclus la liste des algorithmes supportés pour les attributs signés. D’autres options telles que la date de signature et le type de contenu sont inclus.}
\item[\hspace{1mm} -binary]{Normalement, le message d’entrée est convertit au format canonique qui utilise CR et LF comme fin de ligne comme requis par la spécification S/MIME. Avec cette option, aucune conversion n’est faite.}
\item[\hspace{1mm} -nodetach]{En signant un message en utilisant une signature opaque la forme est plus résistante aux translations par les relais, mais ne peut pas être lus par les agents qui ne supportent pas S/MIME. Sans cette option, la signature en texte clair est utilisée.}
\item[\hspace{1mm} -certfile file]{Permet de spécifier des certificats additionnels, qui seront inclus dans le message. Ces certificats devraient être au format PEM.}
\item[\hspace{1mm} -certsout file]{Tout certificat contenus dans le message sont écris dans le fichier spécifié}
\item[\hspace{1mm} -signer file]{Un certificat de signature. Peut-être spécifiée plusieurs fois.}
\item[\hspace{1mm} -recip file]{Le certificat pour le déchiffrement d’un message. Ce certificat doit matcher un des destinataires du message.}
\item[\hspace{1mm} -keyid]{Utilise le subject key identifier pour identifier les certificats au lieu du nom et du numéro de série. Le certificat doit inclure une extension subject key identifier.}
\item[\hspace{1mm} -receipt\_request\_all -receipt\_request\_first]{Pour que l’option -sign inclue une requête de reçu. Indique que les requêtes devraient être fournies par tous les destinataires ou le premier tiers des destinataires.}
\item[\hspace{1mm} -receipt\_request\_to\_emailaddress]{Ajoute une adresse mail où les reçus signés devraient être envoyés. Doit être fournis si un reçu signé est demandé.}
\item[\hspace{1mm} -receipt\_request\_print]{Pour -verify, affiche le contenu des demandes de reçus signés.}
\item[\hspace{1mm} -secretkey key]{Spécifie la clé symétrique à utiliser. La clé doit être fournie en hexa.}
\item[\hspace{1mm} -secretkeyid id]{L’identifiant de clé pour la clé symétrique fournies pour le type KEKRecipentInfo.}
\item[\hspace{1mm} -econtent\_type type]{Définis le type de contenu encapsulé. Peut-être un OID soit en texte soit sous forme numérique.}
\item[\hspace{1mm} -inkey file]{La clé privée à utiliser pour signer ou déchiffrer.}
\item[\hspace{1mm} -passin arg]{Le mot de passe pour la clé privée.}
\item[\hspace{1mm} -rand file(s)]{Un ou plusieurs fichiers contenant des données aléatoires utilisée pour le générateur de nombre aléatoires, ou un socket EGD.}
\item[\hspace{1mm} cert.pem...]{Un ou plusieurs certificats de destinataire de message à utiliser pour chiffrer un message}
\item[\hspace{1mm} -to, -from -subject]{Les en-têtes du mail.}
\item[\hspace{1mm} -purpose, -ignore\_critical, -issuer\_checks, -crl\_check, -crl\_check\_all, -policy\_check, -extended\_crl, -x509\_strict, -policy -check\_ss\_sig]{Diverse options de validation de la chaîne de certificat. Voir verify.}
\end{description}
 
\vspace{1cm}{\huge Codes de sortie }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} 0]{succès de l’opération}
\item[\hspace{1mm} 1]{Erreur en parsant les options}
\item[\hspace{1mm} 2]{Un des fichiers d’entrée ne peut pas être lu}
\item[\hspace{1mm} 3]{Une erreur s’est produite en créant le fichier CMS ou en lisnt le message MIME}
\item[\hspace{1mm} 4]{Erreur durant la vérification ou le déchiffrement du message}
\item[\hspace{1mm} 5]{Le message a été vérifié correctement mais une erreur s’est produite en écrivant les certificats des signeurs.}
\end{description}
 
\vspace{1cm}{\huge Compatibilité avec le format PKCS \#7 }
 
\
 
\hspace{1mm}  l’utilitaire \textbf{smime} peut seulement traiter l’ancien format pkcs \#7. L’utilitaire \textbf{cms} supporte le format CMS.
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{6mm} ]{L’utilisation de \textbf{-keyid} avec \textbf{-sign} ou \textbf{-encrypt}}
\item[\hspace{6mm} ]{L’option \textbf{-outform PEM}}
\item[\hspace{6mm} ]{L’option \textbf{-compress}}
\item[\hspace{6mm} ]{L’option \textbf{-secretkey} avec \textbf{-encrypt}}
\item[\hspace{6mm} ]{\textbf{-EncryptedData\_create} et \textbf{-data\_create} ne peuvent être traitée par les commandes \textbf{smime}.}
\end{description}
 
\vspace{1cm}{\huge Exemples }
 
\
 
\hspace{1mm} Créer un message signé en texte clair: \\
\hspace{1mm} \textbf{openssl cms -sign -in message.txt -text -out mail.msg -signer mycert.pem} \\
\hspace{1mm} Créer un message signé opaque: \\
\hspace{1mm} \textbf{openssl cms -sign -in message.txt -text -out mail.msg -nodetach -signer mycert.pem} \\
\hspace{1mm} Créer un message signé, incluant des certificats additionnels et lire la clé privée depuis un autre fichier: \\
\hspace{1mm} \textbf{openssl cms -sign -in in.txt -text -out mail.msg -signer mycert.pem -inkey mykey.pem -certfile mycerts.pem} \\
\hspace{1mm} Créer un message signé avec 2 signataires, utiliser un identifier de clé: \\
\hspace{1mm} \textbf{openssl cms -sign -in message.txt -text -out mail.msg -signer mycert.pem -signer othercert.pem -keyid} \\
\hspace{1mm} Envoyer un message signé sous Unix directement à sendmail, incluant les en-têtes: \\
\hspace{1mm} \textbf{openssl cms -sign -in in.txt -text -signer mycert.pem -from steve@openssl.org -to someone@somewhere -subject "Signed message" | sendmail someone@somewhere} \\
\hspace{1mm} Vérifier un message et extraire le certificat du signataire en cas de réussite: \\
\hspace{1mm} \textbf{openssl cms -verify -in mail.msg -signer user.pem -out signedtext.txt} \\
\hspace{1mm} Envoyer un mail chiffré avec 3DES: \\
\hspace{1mm} \textbf{openssl cms -encrypt -in in.txt -from steve@openssl.org -to someone@somewhere -subject "Encrypted message" -des3 user.pem -out mail.msg} \\
\hspace{1mm} Signer et chiffrer un mail: \\
\hspace{1mm} \textbf{openssl cms -sign -in ml.txt -signer my.pem -text | openssl cms -encrypt -out mail.msg -from steve@openssl.org -to someone@somewhere -subject "Signed and Encrypted message" -des3 user.pem} \\
\hspace{1mm} Déchiffrer un mail: \\
\hspace{1mm} \textbf{openssl cms -decrypt -in mail.msg -recip mycert.pem -inkey key.pem} \\
\hspace{1mm} La sortie de la Netscape est une structure PKCS \#7 avec le format de signature détachée. Pour vérifier la signature, mettre la structure codé en base 64 entre: \\
\hspace{1mm} \textbf{-----BEGIN PKCS7-----} \\
\hspace{1mm} \textbf{-----END PKCS7-----} \\
\hspace{1mm} Et utiliser la commande: \\
\hspace{1mm} \textbf{openssl cms -verify -inform PEM -in signature.pem -content content.txt} \\
\hspace{1mm} Alternativement vous pouvez décoder la signature et utiliser: \\
\hspace{1mm} \textbf{openssl cms -verify -inform DER -in signature.der -content content.txt} \\
\hspace{1mm} Créer et chiffrer un message en utilisant Camellia 128 bits: \\
\hspace{1mm} \textbf{openssl cms -encrypt -in plain.txt -camellia128 -out mail.msg cert.pem} \\
\hspace{1mm} Ajouter un signataire à un message existant: \\
\hspace{1mm} \textbf{openssl cms -resign -in mail.msg -signer newsign.pem -out mail2.msg} \\
\end{flushleft}
\end{document}
